<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>C++ Tutorial: Quiz - Linked List</title>
  <meta
 content="C++ Tutorial: Quiz - Linked List"
 name="description" />
  <meta
 content="C++ Tutorial, Quiz - Linked List"
 name="keywords" />
  <meta http-equiv="Content-Type"
 content="text/html; charset=ISO-8859-1" />
  <link type="text/css" rel="stylesheet" href="../images/bogostyleWidePre.css" />
</head>
<body>
<div id="page" align="center">
<div id="content" style="width: 800px;">
<div id="logo">
<div class="whitetitle" style="margin-top: 70px;">bogotobogo </div>
</div>
<div id="topheader">
<div class="headerbodytext" align="left"><br />
<strong>Bogotobogo</strong><br />
contact@bogotobogo.com </div>
<div class="smallgraytext" id="toplinks"><a href="../index.html">Home</a>
| <a href="../sitemap.html">Sitemap</a>
| <a href="../blog" target="_blank">Contact Us</a>
</div>
</div>
<div id="menu">
<div class="smallwhitetext" style="padding: 9px;" align="right"><a
 href="../index.html">Home</a>
| <a href="../about_us.html">About Us</a>
| <a href="../products.html">Products</a>
| <a href="../our_services.html">Our Services</a>
| <a href="../blog" target="_blank">Contact Us</a>
</div>
</div>
<div id="submenu">
<div class="smallgraytext" style="padding: 9px;" align="right">
<a href="../gif.html">Gif</a> 
|<a href="../java_applet.html">JavaApplet/Web Start</a>
| <a href="../flash.html">Flash</a>
| <a href="../shockwave.html">ShockWave</a>
| <a href="../svg.html">SVG</a>
| <a href="../iPhone.html">iPhone/iPad</a>
| <a href="../android.html">Android</a>
| <a href="../OnHTML5.html">HTML5</a>
| <a href="../Algorithms/algorithms.html">Algorithms</a>
| <a href="../News/NewsMain.html">News</a>
| <a href="../cplusplus/cpptut.html">C++</a>
| <a href="../Java/tutorial/on_java.html">Java</a>
| <a href="../php/phptut.html">PHP</a>
| <a href="../DesignPatterns/introduction.html">Design Patterns</a>
| <a href="../python/pytut.html">Python</a> 
| <a href="../CSharp/.netframework.html">C#</a>
| <a href="../forums.html">Forums</a> 
| <a href="../VisualBasicSQL/introduction.html">Visual Basic</a>
</div>
</div>


<div id="contenttext">
<br />
<br />
<!-- Use of this code assumes agreement with the Google Custom Search Terms of Service. -->
<!-- The terms of service are available at http://www.google.com/cse/docs/tos.html -->
<form name="cse" id="searchbox_demo" action="http://www.google.com/cse">
  <input type="hidden" name="cref" value="" />
  <input type="hidden" name="ie" value="utf-8" />
  <input type="hidden" name="hl" value="" />
  <input name="q" type="text" size="40" />
  <input type="submit" name="sa" value="Search" />
</form>
<script type="text/javascript" src="http://www.google.com/cse/tools/onthefly?form=searchbox_demo&lang="></script>


<div id="bookmarkshare">
<script type="text/javascript">var addthis_config = {"data_track_clickback":true};</script>
<a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;username=khhong7"><img src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a><script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=khhong7"></script>
</div>

<br />
<br />
<br />
<br />


<div style="padding: 10px;"><span class="titletext">C++ Tutorial <br />
Quiz - Linked List</span></div>

<img src="../images/cplusplus/cpp_logo.jpg" alt="cplusplus logo"/>

<br />
<br />
<div class="bodytext" style="padding: 12px;" align="justify"> 
<div class="subtitle_2nd" id="SubList">List of C++ Tutorials</div>
<ul>
   <li><a href="cpptut.html">C++ Home</a> </li>
   <li><a href="string.html">String</a> </li>
   <li><a href="constructor.html">Constructor</a> </li>
   <li><a href="operatoroverloading.html">Operator Overloading</a></li> 
   <li><a href="virtualfunctions.html">Virtual Functions</a></li>
   <li><a href="dynamic_cast.html">Dynamic Cast Operator</a></li>
   <li><a href="typecast.html">Type Cast Operators</a></li>
   <li><a href="autoptr.html">Class auto_ptr</a></li>
   <li><a href="templates.html">Templates</a></li>
   <li><a href="references.html">References for Built-in Types</a></li>
   <li><a href="valuevsreference.html">Pass by Value vs. Pass by Reference</a></li>
   <li><a href="memoryallocation.html">Memory Allocation</a></li>
   <li><a href="friendclass.html">Friend Functions and Friend Classes</a></li>
   <li><a href="functors.html">Functors (Function Objects)</a></li>
   <li><a href="statics.html">Static Variables and Static Class Members</a></li>
   <li><a href="exceptions.html">Exceptions</a></li>
   <li><a href="pointers.html">Pointers</a></li>
   <li><a href="pointers2.html">Pointers II - void*, Pointer/Array, and Pointer to Pointer</a></li>
   <li><a href="pointers3.html">Pointers III - Pointer to Function, Null Pointer</a></li>
   <li><a href="assembly.html">Taste of Assembly</a></li>
   <li><a href="smallprograms.html">Small Programs</a></li>
   <li><a href="linkedlist.html">Linked List Examples</a></li>
   <li><a href="binarytree.html">Binary Tree Example Code</a></li>
   <li><a href="stl.html">Standard Template Library (STL)</a></li>
   <li><a href="stl2.html">Standard Template Library (STL) II - Maps</a></li>
   <li><a href="stl3_iterators.html">Standard Template Library (STL) III - Iterators</a></li>
   <li><a href="slicing.html">Object Slicing and Virtual Table</a></li>
   <li><a href="this_pointer.html">The this Pointer</a></li>
   <li><a href="stackunwinding.html">Stack Unwinding</a></li>
   <li><a href="upcasting_downcasting.html">Upcasting and Downcasting</a></li>
   <li><a href="object_returning.html">Object Returning</a></li>
   <li><a href="private_inheritance.html">Private Inheritance</a></li>
   <li><a href="cplusplus_keywords.html">C++_Keywords</a></li>
   <li><a href="multithreaded.html">Multi-Threaded Programming - Terminology</a></li>
   <li><a href="multithreaded2A.html">Multi-Threaded Programming II - Native Thread for Win32 (A) </a></li>
   <li><a href="multithreaded2B.html">Multi-Threaded Programming II -  Native Thread for Win32 (B) </a></li>
   <li><a href="multithreaded2C.html">Multi-Threaded Programming II -  Native Thread for Win32 (C) </a></li>
   <li><a href="multithreaded2.html">Multi-Threaded Programming II - C++ Thread for Win32</a></li>
   <li><a href="multithreaded3.html">Multi-Threaded Programming III - C++ Class Thread for Pthreads</a></li>
   <li><a href="multithreadedDebugging.html">Multithread Debugging</a></li>
   <li><a href="embeddedSystemsProgramming.html">Embedded Systems Programming</a></li>
   <li><a href="boost.html">Boost</a></li>
   <li>Programming Questions and Solutions
    <ul>
       <li><a href="quiz_strings_arrays.html">Strings and Arrays</a></li>
       <li><a href="quiz_linkedlist.html">Linked List</a></li>
       <li><a href="quiz_recursion.html">Recursion</a></li>
       <li><a href="quiz_bit_manipulation.html">Bit Manipulation</a> </li>
       <li><a href="google_interview_questions.html">140 Google Interview Questions</a> </li>
    </ul>
   </li>
</ul>
</div>
<br />
<br />

<img src="images/quiz/DoBongSan2.png" alt="DoBongSan2"/>
<br />
<br />
<div class="bodytext" style="padding: 12px;" align="justify"> 
<div class="subtitle_2nd" id="SubList">Problems and Solutions</div>
<ul>
   <li> <a href="#duplicatenode">Removing Duplicates</a> </li>
   <li> <a href="#circularnode">Beginning of a Circular List</a> </li>
   <li> <a href="#thirdlist">A List Representing the Sum of the Two Lists</a> </li>
   <li> <a href="#sortedlist">Making a Sorted List from an Unsorted List</a> </li>
</ul>
<br />
<p>Additional codes related to linked list:</p>
<ul>
	<li><strong> <a href="linkedlist.html#linkedlistexample1"  target="_blank">Example 1</a></strong><br />
	When the head of the list is not a global pointer. </li>
</ul>
<ul>
	<li><strong><a href="linkedlist.html#linkedlistexample2"  target="_blank">Example 2</a></strong> and <strong><a href="linkedlist.html#linkedlistexample3" target="_blank">Example 3</a></strong> <br />
	When the head of the list is a global pointer. <br />
There are some implementation differences between these two examples.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample4"  target="_blank">Example 4</a></strong><br />
	Used class & structure in that class.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample5"  target="_blank">Example 5A</a></strong><br />
	Detecting circular (loop) linked list.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample5B"  target="_blank">Example 5B</a></strong><br />
	Detecting circular (loop) linked list (Generic Class with Template).</li>
	<li><strong><a href="linkedlist.html#linkedlistexample6"  target="_blank">Example 6</a></strong><br />
	Stack with linked list data structure.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample7"  target="_blank">Example 7</a></strong><br />
	Class Stack with linked list data structure.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample8"  target="_blank">Example 8</a></strong><br />
	Finding intersection and union of two linked lists.</li>
</ul>
</div>
<br />
<br />

<div class="bodytext" style="padding: 12px;" align="justify"> 
<div class="subtitle" id="linkedlist">Problems and Solutions - Linked List</div>
<br />
<div class="subtitle_2nd" id="duplicatesnode">Removing Duplicates</div>
<p>A code to remove duplicates from an unsorted list when a temporary buffer is not allowed.</p>
<pre>
/* Removing duplicate from an unsorted list */
#include &lt;iostream&gt;

using namespace std;

typedef struct Node 
{
	int data;
	Node* next;
} Node;

bool createList(Node **head)
{
	*head = NULL;
	return true;
}

void addNode(Node **head, int n)
{
	Node *node = new Node();
	node->data = n;
	node->next = NULL;
	if(*head == NULL) {
		*head = node;
		return;
	}
	Node *cur = *head;
	while(cur) {
		if(cur->next == NULL) {
			cur->next = node;
			return;
		}
		cur = cur -> next;
	}
	return;
}

void deleteNode(Node **head, Node *node)
{
	Node *cur = *head;
	Node *prev = *head;
	if(node == *head) {
		if((*head)->next != NULL) {
			*head = (*head)->next;
		}
		return;
	}
	while(cur) {
		if(cur == node) {
			prev->next = cur->next;
			return;
		}
		prev = cur;
		cur = cur->next;
	}
}

/* No buffer allowed - neeed two pointers */
void removeDuplicateNode(Node **head)
{
	if((*head)->next == NULL) return;
	Node *cur = *head;
	Node *iter;
	while(cur) {
		iter = cur->next;
		while(iter) {
			if(cur->data == iter->data) {
				deleteNode(head, iter);
			}
			iter = iter->next;
		}
		cur = cur->next;
	}
	return;
}

void print(Node *head)
{
	Node *cur = head;
	while(cur) {
		cout << cur->data << " ";
		cur = cur->next;
	}
	cout << endl;
}

int main()
{
	Node *head;
	createList(&head);
	addNode(&head,10);
	addNode(&head,30);
	addNode(&head,40);
	addNode(&head,50);
	addNode(&head,20);
	addNode(&head,30);
	addNode(&head,70);
	addNode(&head,20);
	addNode(&head,30);
	addNode(&head,90);

	print(head);
	removeDuplicateNode(&head);
	print(head);
	return 0;
}
</pre>
<p>Output from the run:</p>
<pre>
10 30 40 50 20 30 70 20 30 90
10 30 40 50 20 70 90
</pre>
<br />
<br />


<div class="subtitle_2nd" id="circularnode">Beginning of a Circular List</div>
<p>Returning a node of the beginning of the loop in circular linked list. <br />
From a corrupt (circular) linked list, the code sample below shows how to find the beginning of the loop. <br />
Two pointers are used: the first pointer iterates one node per step and the other pointer iterated two nodes per step. 
It first find the node where the two pointers meet. Then, each pointer iterates one node per step. It will meet at the beginning of the loop.</p>
<pre>
/* Locate the beginning of circular list */
#include &lt;iostream&gt;

using namespace std;

typedef struct Node 
{
	char data;
	Node* next;
} Node;

bool createList(Node **head)
{
	*head = NULL;
	return true;
}

void addNode(Node **head, char c)
{
	Node *node = new Node();
	node->data = c;
	node->next = NULL;
	if(*head == NULL) {
		*head = node;
		return;
	}
	Node *cur = *head;
	while(cur) {
		if(cur->next == NULL) {
			cur->next = node;
			return;
		}
		cur = cur -> next;
	}
	return;
}

/* Make it circulat at node 'D' */
void makeCircular(Node **head, char c)
{
	if(*head == NULL) return;
	Node *cur = *head;
	Node *tmp;
	while(cur) {
		if(cur->data == c) {
			tmp = cur;
		}
		if(cur->next == NULL) break;
		cur = cur->next;
	}
	cur->next = tmp;
	return;	
}

/* cur : iterates one node at a time */
/* cur2 : iterates two nodes at a time */
char findCircularAt(Node *head)
{
	Node *cur = head;
	Node *cur2 = head;
	if(head == NULL || head->next == NULL) return '\0';
	while(cur) {
		cur = cur->next;
		if(cur2 ->next == NULL ) return '\0';
		cur2 = cur2->next;
		if(cur2 ->next == NULL ) return '\0';
		cur2 = cur2->next;
		if(cur == cur2 ) {
			cur->data;
			break;
		}
	}
	cur2 = cur;
	cur = head;
	while(cur) {
		cur = cur->next;
		cur2 = cur2->next;
		if(cur == cur2) {
			return cur->data;
		}
	}
}

void print(Node *head)
{
	Node *cur = head;
	while(cur) {
		cout << cur->data << " ";
		cur = cur->next;
	}
	cout << endl;
}

/* A -> B -> C -> D -> E -> .... -> M -> N -> D -> E -> .... */
int main()
{
	Node *head;
	createList(&head);
	addNode(&head, 'A');
	addNode(&head, 'B');
	addNode(&head, 'C');
	addNode(&head, 'D');
	addNode(&head, 'E');
	addNode(&head, 'F');
	addNode(&head, 'G');
	addNode(&head, 'H');
	addNode(&head, 'I');
	addNode(&head, 'J');
	addNode(&head, 'K');
	addNode(&head, 'L');
	addNode(&head, 'M');
	addNode(&head, 'N');

	print(head);

	/* Make it circular at node 'D' */
	makeCircular(&head,'D');

	cout << "List is circular at " <<
		findCircularAt(head) << endl;

	return 0;
}
</pre>
<P>Output is</p>
<pre>
A B C D E F G H I J K L M N
List is circular at D
</pre>
<br />
<br />


<div class="subtitle_2nd" id="thirdlist">A List Representing the Sum of the Two Lists</div>
<p>Two linked lists are representing two different numbers. Each node contains a single digit. For example, 234 and 5678, respectively.
This code adds the two numbers and returns the sum as a linked list.</p>
<pre>
/* A new list representing the sum of the two lists
 * The three lists stored the one digit per node of the list */
#include &lt;iostream&gt;

using namespace std;

typedef struct Node 
{
	int data;
	Node* next;
} Node;

bool createList(Node **head)
{
	*head = NULL;
	return true;
}

void addNode(Node **head, int n)
{
	Node *node = new Node();
	node->data = n;
	node->next = NULL;
	if(*head == NULL) {
		*head = node;
		return;
	}
	Node *cur = *head;
	while(cur) {
		if(cur->next == NULL) {
			cur->next = node;
			return;
		}
		cur = cur -> next;
	}
	return;
}

void insertFront(Node **head, int n)
{
	Node *cur = new Node();
	if(*head == NULL) {
		cur->data = n;
		*head = cur;
		(*head)->next = NULL;
		return;
	}
	cur->next = *head;
	cur->data = n;
	*head = cur;
	return;

}

/* Get the number from each digit stored in a node of a list */
int getNumber(Node *head)
{
	int sum = 0;
	if(head == NULL) return sum;
	Node *cur = head;
	while(cur) {
		sum *= 10;
		sum += cur->data;
		cur = cur->next;
	}
	return sum;
}

/* just convert unsigned int to string - itoa()*/
void i2a(int n, char s[])
{
	int i = 0;
	while(1) {
		s[i++] = (n % 10) + '0';
		if((n /= 10) == 0) break;
	}
	s[i]='\0';
}

/* Get the sum of numbers from the two list and
 * put each digit of the sum to a new list
 * 5912 = 234 + 5678
 * '5' into the head, then '9' next in the list, and so on. */
void putNumber(Node **head, Node *headA, Node *headB)
{
	int sum = getNumber(headA)+getNumber(headB);
	char s[10];

	/* s has reversed digits */
	i2a(sum,s); 

	/* get each character one by one 
	and insert into the head of the list 
	because the list has reversed digit*/
	for(int i = 0; i < strlen(s); i++) {
		insertFront(head, s[i]-'0');
	}
	return;
}

void print(Node *head)
{
	Node *cur = head;
	while(cur) {
		cout << cur->data << " ";
		cur = cur->next;
	}
	cout << endl;
}

int main()
{
	Node *headA, *headB;
	Node *headSum;
	createList(&headA);
	createList(&headB);
	createList(&headSum);

	// 234
	addNode(&headA,2);
	addNode(&headA,3);
	addNode(&headA,4);
	cout << "Sum A = " << getNumber(headA) << endl;

	// 5678
	addNode(&headB,5);
	addNode(&headB,6);
	addNode(&headB,7);
	addNode(&headB,8);
	cout << "Sum B = " << getNumber(headB) << endl;

	// 234 + 5678
	putNumber(&headSum,headA,headB);

	print(headA);
	print(headB);
	print(headSum);

	return 0;
}
</pre>
<p>Output from the run is:</p>
<pre>
Sum A = 234
Sum B = 5678
2 3 4
5 6 7 8
5 9 1 2
</pre>
<br />
<br />


<div class="subtitle_2nd" id="sortedlist">Making a Sorted List from an Unsorted List</div>
<p>This example code makes sorted list out of unsorted list. Because we are looping through both sorted and unsorted lists to compare the data, it's <i>O(n <sup>2</sup>)</i>. So, it's not going to be efficient for a huge list. 
<br />
<pre>#include &lt;iostream&gt;

using namespace std;

struct node 
{
	int data;
	node *next;
};

// append at the end of the list
void append(struct node **head, int n)
{
	struct node *cur;
	struct node *new_node = (struct node *)malloc(sizeof(struct node));
	new_node->data = n;
	new_node->next = NULL;
	if(*head == NULL) {
		*head = new_node;
		return;
	}

	cur = *head;
	while(cur) {
		if(cur->next == NULL) {
			cur->next = new_node;
			return;
		}
		cur = cur->next;
	}
}

void insert(struct node **head, int newData)
{
	struct node *current = *head;
	struct node *prev = *head;
	struct node *newNode = NULL;

	newNode = (struct node *)malloc(sizeof(struct node));
	newNode->data = newData;
	newNode->next = NULL;

	if(*head == NULL) {
		*head = newNode;
		return;
	}

	current = *head;
	// insert if new data is smaller than existing data
	while(current) {
		if(newData <= current->data ) {
			if(current == *head) {
				newNode->next = *head;
				*head = newNode;
				return;
			}
			newNode->next = current;
			prev->next = newNode;
			return;
		}
		prev = current;
		current = current->next;
	}
	// append if new data is the biggest
	append(head,newData);
	return;
}
 
struct node *getSorted(struct node *unsorted)
{
	struct node *in = unsorted;
	struct node *res = NULL;
	struct node *current = NULL;

	if(unsorted == NULL) return res;

	current = unsorted;

	// loop through unsorted list one by one
	while(current) {
		insert(&res, current->data);
		current = current->next;
	}
	return res;
}

void display(struct node *head)
{
	if(head == NULL) return;
	struct node *cur = head;
	while(cur) {
		cout << cur->data << ' ';
		cur = cur->next;
	}
	cout << endl;
}

int main()
{
	struct node *unsortedList = NULL;

	// populate list by random number: unsorted
	for(int i = 0; i < 10; i++)
		append(&unsortedList, rand() % 1000);

	cout << "Unsorted: ";
	display(unsortedList);

	cout << "Sorted: ";
	// display after converting unsorted list to sorted list
	display(getSorted(unsortedList));

	return 0;
}
</pre>
<p>Here is the output:</p>
<pre>
Unsorted: 41 467 334 500 169 724 478 358 962 464
Sorted: 41 169 334 358 464 467 478 500 724 962
</pre>
<br />
<br />

<div class="subtitle_2nd" id="SubList">Problems and Solutions</div>
<ul>
   <li> <a href="#duplicatenode">Removing Duplicates</a> </li>
   <li> <a href="#circularnode">Beginning of a Circular List</a> </li>
   <li> <a href="#thirdlist">A List Representing the Sum of the Two Lists</a> </li>
   <li> <a href="#sortedlist">Making a Sorted List from an Unsorted List</a> </li>
</ul>
<br />
<br />

<p>Additional codes related to linked list:</p>
<ul>
   <li> <a href="linkedlist.html">Linked List</a> </li>
</ul>
<ul>
	<li><strong> <a href="linkedlist.html#linkedlistexample1"  target="_blank">Example 1</a></strong><br />
	When the head of the list is not a global pointer. </li>
	<li><strong><a href="linkedlist.html#linkedlistexample2"  target="_blank">Example 2</a></strong> and <strong><a href="linkedlist.html#linkedlistexample3" target="_blank">Example 3</a></strong> <br />
	When the head of the list is a global pointer. <br />
There are some implementation differences between these two examples.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample4"  target="_blank">Example 4</a></strong><br />
	Used class & structure in that class.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample5"  target="_blank">Example 5A</a></strong><br />
	Detecting circular (loop) linked list.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample5B"  target="_blank">Example 5B</a></strong><br />
	Detecting circular (loop) linked list (Generic Class with Template).</li>
	<li><strong><a href="linkedlist.html#linkedlistexample6"  target="_blank">Example 6</a></strong><br />
	Stack with linked list data structure.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample7"  target="_blank">Example 7</a></strong><br />
	Class Stack with linked list data structure.</li>
	<li><strong><a href="linkedlist.html#linkedlistexample8"  target="_blank">Example 8</a></strong><br />
	Finding intersection and union of two linked lists.</li>
</ul>
<br />
<br />

<img src="images/quiz/KangChunSan.png" alt="KangChunSan"/>
<br />
<br />
<br />
<div class="subtitle_2nd" id="FullList">C++ Tutorials</div>
<ul>
   <li><a href="cpptut.html">C++ Home</a> </li>
   <li><a href="string.html">String</a> </li>
   <li><a href="constructor.html">Constructor</a> </li>
   <li><a href="operatoroverloading.html">Operator Overloading</a></li> 
   <li><a href="virtualfunctions.html">Virtual Functions</a></li>
   <li><a href="dynamic_cast.html">Dynamic Cast Operator</a></li>
   <li><a href="typecast.html">Type Cast Operators</a></li>
   <li><a href="autoptr.html">Class auto_ptr</a></li>
   <li><a href="templates.html">Templates</a></li>
   <li><a href="references.html">References for Built-in Types</a></li>
   <li><a href="valuevsreference.html">Pass by Value vs. Pass by Reference</a></li>
   <li><a href="memoryallocation.html">Memory Allocation</a></li>
   <li><a href="friendclass.html">Friend Functions and Friend Classes</a></li>
   <li><a href="functors.html">Functors (Function Objects)</a></li>
   <li><a href="statics.html">Static Variables and Static Class Members</a></li>
   <li><a href="exceptions.html">Exceptions</a></li>
   <li><a href="pointers.html">Pointers</a></li>
   <li><a href="pointers2.html">Pointers II</a></li>
   <li><a href="pointers3.html">Pointers III</a></li>
   <li><a href="assembly.html">Taste of Assembly</a></li>
   <li><a href="smallprograms.html">Small Programs</a></li>
   <li><a href="linkedlist.html">Linked List Examples</a></li>
   <li><a href="stl.html">Standard Template Library (STL)</a></li>
   <li><a href="stl2.html">Standard Template Library (STL) II - Maps</a></li>
   <li><a href="stl3_iterators.html">Standard Template Library (STL) III - Iterators</a></li>
   <li><a href="slicing.html">Object Slicing and Virtual Table</a></li>
   <li><a href="this_pointer.html">The this Pointer</a></li>
   <li><a href="stackunwinding.html">Stack Unwinding</a></li>
   <li><a href="upcasting_downcasting.html">Upcasting and Downcasting</a></li>
   <li><a href="object_returning.html">Object Returning</a></li>
   <li><a href="private_inheritance.html">Private Inheritance</a></li>
   <li><a href="cplusplus_keywords.html">C++_Keywords</a></li>
   <li><a href="multithreaded.html">Multi-Threaded Programming - Terminology</a></li>
   <li><a href="multithreaded2A.html">Multi-Threaded Programming II - Native Thread for Win32 (A) </a></li>
   <li><a href="multithreaded2B.html">Multi-Threaded Programming II -  Native Thread for Win32 (B) </a></li>
   <li><a href="multithreaded2C.html">Multi-Threaded Programming II -  Native Thread for Win32 (C) </a></li>
   <li><a href="multithreaded2.html">Multi-Threaded Programming II - C++ Thread for Win32</a></li>
   <li><a href="multithreaded3.html">Multi-Threaded Programming III - C++ Class Thread for Pthreads</a></li>
   <li><a href="multithreadedDebugging.html">Multithread Debugging</a></li>
   <li><a href="embeddedSystemsProgramming.html">Embedded Systems Programming</a></li>
   <li><a href="boost.html">Boost</a></li>
   <li>Programming Questions and Solutions
    <ul>
       <li><a href="quiz_strings_arrays.html">Strings and Arrays</a></li>
       <li><a href="quiz_linkedlist.html">Linked List</a></li>
       <li><a href="quiz_recursion.html">Recursion</a></li>
       <li><a href="quiz_bit_manipulation.html">Bit Manipulation</a> </li>
       <li><a href="google_interview_questions.html">140 Google Interview Questions</a> </li>
    </ul>
   </li>
</ul>

<br />
<br />
<div id="rightpanel">
<div align="center">
</div></div>
<br />

<br />
</div>

<br />
<br />
<br />



<div class="smallgraytext" id="footer"><a href="../index.html">Home</a>
| <a href="../about_us.html">About Us</a>
| <a href="../products.html">products</a>
| <a href="../our_services.html">Our Services</a>
| <a href="#">Contact Us</a>
| Bogotobogo &copy; 2011 | <a target="_blank" href="http://www.bogotobogo.com">Bogotobogo </a></div>
</div>
</div>
</body>
</html>

